import { getMenulistServer } from "../services/News";

export default {

    namespace: 'News',

    state: {
        // 是否打开(父)二级菜单栏
        openKeys:[],
        // 子菜单是否被选择
        selectKeys:[],
        collapsed: false,
        menu:[],
    },

    subscriptions: {
        setup({ dispatch, history }) {  // 初始化
        },
    },

    reducers: {
        // 菜单栏折叠
        change_collapsed(state, action) {
            let newState = {...state}
            return { ...state, collapsed: !newState.collapsed };
        },
        // 获取菜单
        change_menulist(state, action) {
            return { ...state, menu:action.payload };
        },
        // 二级菜单栏是否打开
        change_openKeys(state, action) {
            return { ...state, openKeys:action.payload };
        },
        // 子菜单栏是否被选中
        change_selectKeys(state, action) {
            return { ...state, selectKeys: action.payload };
        },

    },
    
    effects: {
        // 获取菜单信息
        *getMenulist(action, { call, put }) {
            var res = yield call(getMenulistServer)
            yield put({
                type: 'change_menulist',
                payload: res.data
            })
            
        },
    },

};


// const mapStateToProps = (state) => {
//     return {
//         list: state.maizuo.list
//     }
// }

// 1.使用mapDispatchToProps获得方法,通过调用props.getCinemaListAction()
// 外部定义,并导入
// const x = () => {
//     return {
//         type: 'News/changeCollapsed'
//     }
// }
// connet第二个参数为一个对象时
// const mapDispatchToProps = {
//     getCinemaListAction：x
// }意思是mapDispatchToProps{ 里面接收的是{type: 'News/changeCollapsed'} 会自动dispatch}

// 2.或者不用mapDispatchToProps(此时connet第二个参数需要为null，或不写)
// 直接自己触发props.dispatch({
//     type: 'News/changeCollapsed'
// })

// 3.即使用mapDispatchToProps,又想用dispatch ，connet第二个参数为一个函数时
// const mapDispatchToProps = (dispatch) => ({
//     changeOpenKeys: (value) => (dispatch({
//         type: 'News/change_openKeys',
//         payload: value,
//     })),
//     getMenulist,（这种写法可以会出bug，最好同上面的）
// })

// export default connect(mapStateToProps, mapDispatchToProps)(Cinema)